import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebListener
public class UserCountListener implements  HttpSessionListener {

    public UserCountListener() {
    }

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        /* Session is created. 当session创建出来的时候，执行这个方法+1*/
//        ctx是存在在线人数数据的地方
        ServletContext ctx = se.getSession().getServletContext();
        Integer userCount = (Integer) ctx.getAttribute("userCount");
        if (userCount == null) {
            userCount = 0;
        }
        userCount++;
        ctx.setAttribute("userCount", userCount);
    }


//销毁session监听
//一旦销毁Session就会触发一次这个事件！

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        /* Session is destroyed. 当session销毁的时候，执行这个方法-1*/
        ServletContext ctx = se.getSession().getServletContext();
        Integer userCount = (Integer) ctx.getAttribute("userCount");
        if (userCount == null) {
            userCount = 0;
        }
        userCount--;
        ctx.setAttribute("userCount", userCount);
    }
}


